//public class ArrayList {
//    private Object[] data;
//    private int size;
//    ArrayList(){
//        this.data = new Object[4];
//        this.size = 0;
//    }
//    ArrayList(int initCapacity)
//    {
//        this.data = new Object[initCapacity];
//        this.size = 0;
//    }
//    public void add(Object obj)
//    {
//        this.data[this.size++]=obj ;
//    }
//
//    public void remove(){
//        if(!this.empty())
//           this.size--;
//    }
//
//    public boolean empty()
//    {
//        return this.size==0;
//    }
//
//    public int size(){return this.size;}
//
//    public Object getBack() {return this.data[this.size-1];}
//}

public class ArrayList<T>{
    private Object[] array;
    private int size;

    ArrayList(){
        this.array = new Object[4];
    }
    public int size(){return size;}
    public void add(Object obj)
    {
        array[size++]=obj;
    }
    public void remove(){
        if(!empty())
            size--;
    }

    public T getBack(){ return (T)this.array[this.size-1];}
    public T getFront() {return (T)this.array[0];}
    public boolean empty(){return size==0;}
}